3e6377d6eiFjF1hHIS6JEIOFk62xSA tools/balloon/README
3e6377dbGcgnisKw16DPCaND7oGO3Q tools/balloon/balloon.c
3eb781edFwm_pW9FwnQACIe68viLOw tools/control/Makefile
-3eca6a96a31IwaKtkEa4jmzwTWlm8Q tools/control/README-xenctl
+3eca6a96a31IwaKtkEa4jmzwTWlm8Q tools/control/README-web
3eb781fceEYkUi1XHKf2V0KX7si2JA tools/control/build-cmdline.xml
3ec41f7cWCxQ8pdH8ZWqhhv-38qQ1w tools/control/build-web.xml
3ec41f7ca6IBXDSe0HVcMPp3PPloOQ tools/control/build.properties
3ec41f7eTqbaFqMGU7lJG09vlEt0TQ tools/control/web/tmpl/index.tmpl
3ec41f7ed6_QZ1mg0vuA9Xu1wu1plw tools/control/web/tmpl/install.pl
3ec41f7emmAnjM4gsW6JWkqsjfi4Rg tools/control/web/tmpl/makefile
+3f0d3c5bP8omJUhjEmXpsRvOZH3igw tools/control/web/tmpl/pd-g.tmpl
+3f0d3c5bpmNu22iZ8mb-9hzOZUWEZw tools/control/web/tmpl/pd-gr.tmpl
+3f0d3c5b1oQA8A-Y4AK0akN9k2T1KQ tools/control/web/tmpl/pd-l.tmpl
+3f0d3c5bkJgUEumHh-qAL3ZB1xApSw tools/control/web/tmpl/pd-r.tmpl
+3f0d3c5bOEOuHzB1HdWY9GvlYj7H-w tools/control/web/tmpl/pd-rr.tmpl
+3f0d3c5cb9-AClRfExuRwJi45LcYuA tools/control/web/tmpl/pd.tmpl
+3f0d3c5cQqQ23OpQJx-sNE0-EclRlA tools/control/web/tmpl/pdmenu.tmpl
3ec41f7eoDHD2raa4x6dBINr4QLO3A tools/control/web/tmpl/vd-fv.tmpl
3ec41f7eawycxV05Ow3LfZtOlHZJPA tools/control/web/tmpl/vd-pa.tmpl
3ec41f7ef4mVT4vwOEL40MKIzS4EeA tools/control/web/tmpl/vd-par.tmpl
xenolinux-2.4.21-sparse/arch/xeno/drivers/block/xl_physdisk_proc.c.bak
xenolinux-2.4.21-sparse/arch/xeno/drivers/block/xl_physdisk_proc.c~
xenolinux-2.4.21-sparse/include/linux/blk.h~
+tools/control/web/pd-g.jsp
+tools/control/web/pd-gr.jsp
+tools/control/web/pd-l.jsp
+tools/control/web/pd-r.jsp
+tools/control/web/pd-rr.jsp
+tools/control/web/pd.jsp
--- /dev/null
+
+some notes on configuring xenctl...
+
+to build:
+
+ export PATH=/usr/groups/xeno/build_tools/bin:${PATH}
+ # this next step has already been done.
+ # cp $CATALINA_HOME/server/lib/catalina-ant.jar $ANT_HOME/lib
+ cd xeno.bk/tools/control
+ make
+ cd xeno.bk/tools/internal
+ make
+
+to setup:
+
+ ## expand the jakarta (aka catalina) tree somewhere accessible by dom0
+ export ROOTDIR=/anfs/scratch/labyrinth/ach61
+ cd $ROOTDIR
+ tar zxf /usr/groups/xeno/archive/tomcat-4.1.24.tar.gz
+ export CATALINA_HOME=$ROOTDIR/jakarta-tomcat-4.1.24
+ export JAVA_HOME=/usr/groups/xeno/build_tools/java-1.4.1
+
+ ## edit $CATALINA_HOME/conf/server.xml, change port 8080 to port 80
+ cp $CATALINA_HOME/conf/server.xml $CATALINA_HOME/conf/server.orig
+ sed 's/8080/80/g' $CATALINA_HOME/conf/server.orig > $CATALINA_HOME/conf/server.xml
+
+ ## install the xenctl web archive
+ cp xeno.bk/tools/control/dist/xenctl-0.1-dev.war $CATALINA_HOME/webapps/xenctl.war
+ cp xeno.bk/tools/control/domctl.xml /var/lib/xen
+
+ ## either edit xi_tools_dir in domctl.xml or copy the binaries
+ # find xeno.bk/tools/internal -perm +111 -type f -exec cp {} /usr/local/bin \;
+
+to run:
+ $CATALINA_HOME/bin/startup.sh
+ # point your browser at hostname-0.xeno.cl.cam.ac.uk:80/xenctl
+
+
+for development:
+ ## edit xeno.bk/tools/control/build.properties
+ # change manger.url to your xenoserver: mousetrap-0.xeno.cl.cam.ac.uk
+ # change build.home to your xeno.bk full path
+ ## to "make install-web" in xeno.bk/tools/control instead of copying the war file
+ cp $CATALINA_HOME/conf/tomcat-users.xml $CATALINA_HOME/conf/tomcat-users.orig
+ sed -e 's/<tomcat-users>/<tomcat-users>\\r <role rolename="standard"\/>\\r <role rolename="manager"\/>\\r <user username="hobbes" password="tiger" roles="standard,manager"\/>/' $CATALINA_HOME/conf/tomcat-users.orig > $CATALINA_HOME/conf/tomcat-users.xml
+++ /dev/null
-
-some notes on configuring xenctl...
-
-to build:
-
- export PATH=/usr/groups/xeno/build_tools/bin:${PATH}
- # this next step has already been done.
- # cp $CATALINA_HOME/server/lib/catalina-ant.jar $ANT_HOME/lib
- cd xeno.bk/tools/control
- make
- cd xeno.bk/tools/internal
- make
-
-to setup:
-
- ## expand the jakarta (aka catalina) tree somewhere accessible by dom0
- export ROOTDIR=/anfs/scratch/labyrinth/ach61
- cd $ROOTDIR
- tar zxf /usr/groups/xeno/archive/tomcat-4.1.24.tar.gz
- export CATALINA_HOME=$ROOTDIR/jakarta-tomcat-4.1.24
- export JAVA_HOME=/usr/groups/xeno/build_tools/java-1.4.1
-
- ## edit $CATALINA_HOME/conf/server.xml, change port 8080 to port 80
- cp $CATALINA_HOME/conf/server.xml $CATALINA_HOME/conf/server.orig
- sed 's/8080/80/g' $CATALINA_HOME/conf/server.orig > $CATALINA_HOME/conf/server.xml
-
- ## install the xenctl web archive
- cp xeno.bk/tools/control/dist/xenctl-0.1-dev.war $CATALINA_HOME/webapps/xenctl.war
- cp xeno.bk/tools/control/domctl.xml /var/lib/xen
-
- ## either edit xi_tools_dir in domctl.xml or copy the binaries
- # find xeno.bk/tools/internal -perm +111 -type f -exec cp {} /usr/local/bin \;
-
-to run:
- $CATALINA_HOME/bin/startup.sh
- # point your browser at hostname-0.xeno.cl.cam.ac.uk:80/xenctl
-
-
-for development:
- ## edit xeno.bk/tools/control/build.properties
- # change manger.url to your xenoserver: mousetrap-0.xeno.cl.cam.ac.uk
- # change build.home to your xeno.bk full path
- ## to "make install" in xeno.bk/tools/control instead of copying the war file
- cp $CATALINA_HOME/conf/tomcat-users.xml $CATALINA_HOME/conf/tomcat-users.orig
- sed -e 's/<tomcat-users>/<tomcat-users>\\r <role rolename="standard"\/>\\r <role rolename="manager"\/>\\r <user username="hobbes" password="tiger" roles="standard,manager"\/>/' $CATALINA_HOME/conf/tomcat-users.orig > $CATALINA_HOME/conf/tomcat-users.xml
<td nowrap="nowrap">
<a href="dom.jsp" class="homemenu">Domain Manager</a><br>
<a href="vd.jsp" class="homemenu">Virtual Disk Manager</a><br>
+ <a href="pd.jsp" class="homemenu">Physical Disk Manager</a><br>
</td>
</tr>
vd-par.jsp vd-vdcr.jsp vd-vddr.jsp vd-vdrr.jsp \
vd-vbdcr.jsp vd-vbdfr.jsp \
dom.jsp dom-lis.jsp dom-new.jsp dom-newr.jsp dom-sta.jsp dom-star.jsp \
- dom-stp.jsp dom-stpr.jsp dom-del.jsp dom-delr.jsp
+ dom-stp.jsp dom-stpr.jsp dom-del.jsp dom-delr.jsp \
+ pd.jsp pd-g.jsp pd-gr.jsp pd-l.jsp pd-r.jsp pd-rr.jsp
target = ..
target0 = $(target)/xenostyle.css
target1 = $(target)/index.jsp $(target)/vd.jsp \
$(target)/dom.jsp $(target)/dom-lis.jsp $(target)/dom-new.jsp \
$(target)/dom-newr.jsp $(target)/dom-sta.jsp $(target)/dom-star.jsp \
$(target)/dom-stp.jsp $(target)/dom-stpr.jsp \
- $(target)/dom-del.jsp $(target)/dom-delr.jsp
+ $(target)/dom-del.jsp $(target)/dom-delr.jsp \
+ $(target)/pd.jsp $(target)/pd-g.jsp $(target)/pd-gr.jsp \
+ $(target)/pd-l.jsp $(target)/pd-r.jsp $(target)/pd-rr.jsp
.SUFFIXES: .tmpl .jsp
./install.pl -s -home index
mv index.jsp $(target)
-$(target)/%.jsp: %.tmpl
+$(target)/%.jsp: %.tmpl xenofoot.def xenohead.def
./install.pl $*
mv $*.jsp $(target)
--- /dev/null
+Grant Access
+SECTION&XenoServers
+BREADCRUMB&Physical Disk Manager&pd.jsp
+
+<!-- content -->
+<img src="pixel.gif" class="block" width="1" height="12">
+
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+INCLUDE&pdmenu.tmpl
+<td valign="top">
+
+<form method="post" action="pd-gr.jsp">
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+
+<tr><td>
+
+<table cellpadding="2" cellspacing="0" border="0">
+<tbody>
+ <tr class="vdh"><td></td><td>maj:min</td><td>blocks</td><td>start sect</td><td>num sects</td><td>name</td></tr>
+ <%
+ int count = root.pm().getPartitionCount();
+ for (int loop = 0; loop < count; loop++)
+ {
+ Partition p = root.pm().getPartition(loop);
+ if (p.isXeno() == true)
+ {
+ %>
+ <tr class="vds"><td></td>
+ <%
+ }
+ else
+ {
+ %>
+ <tr class="vdt">
+ <td><input type="checkbox" name="p" value="<%= p.getName() %>"></td>
+ <%
+ }
+ %>
+ <td><%= p.getMajor() %>:<%= p.getMinor() %></td>
+ <td align="right"><%= p.getBlocks() %></td>
+ <td align="right"><%= p.getStartSect() %> </td>
+ <td align="right"><%= p.getNumSects() %> </td>
+ <td><%= p.getName() %> </td>
+ </tr>
+ <%
+ }
+ %>
+</tbody>
+</table>
+
+</td></tr>
+
+##WHITESPACE## ##GREYLINE1## ##WHITESPACE##
+
+<tr><td>
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+
+<tr>
+ <td width="100"></td>
+ <td width="7"></td>
+ <td></td>
+</tr>
+
+<tr>
+ <td align="right">domain</td>
+ <td></td>
+ <td> <input type="text" size="3" name="domain"> </td>
+</tr>
+<tr>
+ <td align="right"></td>
+ <td></td>
+ <td> <input type="radio" name="mode" value="ro" checked>RO
+ <input type="radio" name="mode" value="rw">RW</td>
+</tr>
+</tbody>
+</table>
+</td></tr>
+
+##WHITESPACE## ##GREYLINE1## ##WHITESPACE##
+
+<tr>
+ <td><input type="submit" name="action" value="grant access"></td>
+</tr>
+
+</tbody>
+</table>
+</form>
+
+</td>
+</tbody>
+</table>
+
+
+
+
+<!-- end content -->
--- /dev/null
+Grant Access Results
+SECTION&XenoServers
+BREADCRUMB&Physical Disk Manager&pd.jsp
+
+<!-- content -->
+<img src="pixel.gif" class="block" width="1" height="12">
+
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+INCLUDE&pdmenu.tmpl
+<td valign="top">
+
+<b>Grant Access Results</b>
+<br>
+
+<%
+ HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper(request);
+ Defaults d = sc.getDefaults();
+
+ String partitions[] = hsrw.getParameterValues("p");
+ String size = null;
+
+ if (partitions == null || partitions.length == 0)
+ {
+%>
+Error: No partitions chosen.<br>
+<%
+ }
+ else if (hsrw.getParameter("domain") == null ||
+ hsrw.getParameter("domain").trim().equals(""))
+ {
+%>
+Error: No domain specified.<br>
+<%
+ }
+ else
+ {
+ int domain = -1;
+
+ try
+ {
+ domain = Integer.decode(hsrw.getParameter("domain")).intValue();
+ Mode mode;
+ if (hsrw.getParameter("mode").equals("rw")) {
+ mode = Mode.READ_WRITE;
+ } else {
+ mode = Mode.READ_ONLY;
+ }
+
+ for (int i = 0; i < partitions.length; i++)
+ {
+%>
+output[<%= i %>] =<br>
+<%= new CommandPhysicalGrant(d, domain, partitions[i], mode, false).execute() %> <br>
+<%
+ }
+ } catch (NumberFormatException e) {
+%>
+Error: invalid domain specification.<br>
+<%
+ }
+ }
+%>
+
+
+<%
+ root.doFlushState();
+%>
+
+
+</td>
+</tbody>
+</table>
+
+
+
+<!-- end content -->
--- /dev/null
+Physical Access List
+SECTION&XenoServers
+BREADCRUMB&Physical Disk Manager&pd.jsp
+
+<!-- content -->
+<img src="pixel.gif" class="block" width="1" height="12">
+
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+INCLUDE&pdmenu.tmpl
+<td valign="top">
+
+<%
+ CommandDomainList list = new CommandDomainList(sc.getDefaults());
+ String output = list.executeWeb();
+ if (output != null)
+ {
+%>
+<%= output %>
+<%
+ } else {
+ Domain domains[] = list.domains();
+%>
+
+<table cellpadding="2" cellspacing="0" border="0">
+<tbody>
+ <tr class="vdh"><td>domain<br>id</td><td>mode</td><td>maj:min</td><td>blocks</td><td>start sect</td><td>num sects</td><td>name</td></tr>
+ <%
+ /* assert: domains != null, otherwise, where is the servlet engine? */
+ for (int loop = 0; loop < domains.length; loop++)
+ {
+ if ( domains[loop].id == 0 )
+ continue;
+ CommandPhysicalList plist = new CommandPhysicalList(sc.getDefaults(),domains[loop].id);
+ output = plist.executeWeb();
+ if (output != null)
+ {
+%>
+<%= output %>
+<%
+ } else {
+ Iterator i = plist.extents().entrySet().iterator();
+ while (i.hasNext()) {
+ Entry entry = (Entry) i.next();
+ Extent e = (Extent) entry.getKey();
+ String mode = entry.getValue().toString();
+ Partition p = root.pm().getPartition(e);
+ if (p != null) {
+ %>
+ <tr>
+ <td><%= domains[loop].id %></td>
+ <td><%= mode %></td>
+ <td><%= p.getMajor() %>:<%= p.getMinor() %></td>
+ <td align="right"><%= p.getBlocks() %></td>
+ <td align="right"><%= p.getStartSect() %> </td>
+ <td align="right"><%= p.getNumSects() %> </td>
+ <td><%= p.getName() %> </td>
+ </tr>
+ <%
+ } else {
+ %>
+ <tr>
+ <td><%= domains[loop].id %></td>
+ <td><%= mode %></td>
+ <td><%= e.getMajor() %>:<%= e.getMinor()|e.getPartitionNo() %></td>
+ <td align="right"></td>
+ <td align="right"><%= e.getOffset() %> </td>
+ <td align="right"><%= e.getSize() %> </td>
+ <td></td>
+ </tr>
+ <%
+ }
+ }
+ }
+ }
+ %>
+</tbody>
+</table>
+<%
+ }
+%>
+
+</td>
+</tbody>
+</table>
+
+
+
+
+<!-- end content -->
--- /dev/null
+Revoke Access
+SECTION&XenoServers
+BREADCRUMB&Physical Disk Manager&pd.jsp
+
+<!-- content -->
+<img src="pixel.gif" class="block" width="1" height="12">
+
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+INCLUDE&pdmenu.tmpl
+<td valign="top">
+
+<%
+ CommandDomainList list = new CommandDomainList(sc.getDefaults());
+ String output = list.executeWeb();
+ if (output != null)
+ {
+%>
+<%= output %>
+<%
+ } else {
+ Domain domains[] = list.domains();
+%>
+
+<form method="post" action="pd-rr.jsp">
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+<tr><td>
+<table cellpadding="2" cellspacing="0" border="0">
+<tbody>
+ <tr class="vdh"><td></td><td>domain<br>id</td><td>mode</td><td>maj:min</td><td>blocks</td><td>start sect</td><td>num sects</td><td>name</td></tr>
+ <%
+ /* assert: domains != null, otherwise, where is the servlet engine? */
+ for (int loop = 0; loop < domains.length; loop++)
+ {
+ if ( domains[loop].id == 0 )
+ continue;
+ CommandPhysicalList plist = new CommandPhysicalList(sc.getDefaults(),domains[loop].id);
+ output = plist.executeWeb();
+ if (output != null)
+ {
+%>
+<%= output %>
+<%
+ } else {
+ Iterator i = plist.extents().entrySet().iterator();
+ while (i.hasNext()) {
+ Entry entry = (Entry) i.next();
+ Extent e = (Extent) entry.getKey();
+ String mode = entry.getValue().toString();
+ Partition p = root.pm().getPartition(e);
+ if (p != null) {
+ %>
+ <tr>
+ <td><input type="checkbox" name="dompart" value="<%= domains[loop].id + " " + p.getName() %>"></td>
+ <td><%= domains[loop].id %></td>
+ <td><%= mode %></td>
+ <td><%= p.getMajor() %>:<%= p.getMinor() %></td>
+ <td align="right"><%= p.getBlocks() %></td>
+ <td align="right"><%= p.getStartSect() %> </td>
+ <td align="right"><%= p.getNumSects() %> </td>
+ <td><%= p.getName() %> </td>
+ </tr>
+ <%
+ } else {
+ %>
+ <tr>
+ <td><%= domains[loop].id %></td>
+ <td><%= mode %></td>
+ <td><%= e.getMajor() %>:<%= e.getMinor()|e.getPartitionNo() %></td>
+ <td align="right"></td>
+ <td align="right"><%= e.getOffset() %> </td>
+ <td align="right"><%= e.getSize() %> </td>
+ <td></td>
+ </tr>
+ <%
+ }
+ }
+ }
+ }
+ %>
+</tbody>
+</table>
+</td></tr>
+
+##WHITESPACE## ##GREYLINE1## ##WHITESPACE##
+
+<tr>
+ <td><input type="submit" name="action" value="revoke access"></td>
+</tr>
+</table>
+</form>
+<%
+ }
+%>
+
+</td>
+</tbody>
+</table>
+
+
+
+
+<!-- end content -->
--- /dev/null
+Revoke Access
+SECTION&XenoServers
+BREADCRUMB&Physical Disk Manager&pd.jsp
+
+<!-- content -->
+<img src="pixel.gif" class="block" width="1" height="12">
+
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+INCLUDE&pdmenu.tmpl
+<td valign="top">
+
+<b>Revoke Access Results</b>
+<br>
+<%
+ HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper(request);
+
+ String partitions[] = hsrw.getParameterValues("dompart");
+ if (partitions == null || partitions.length == 0)
+ {
+%>
+Error: No partitions chosen.<br>
+<%
+ }
+ else
+ {
+ for (int i = 0; i < partitions.length; i++)
+ {
+ int domain = Integer.parseInt(partitions[i].substring(0,partitions[i].indexOf(" ")));
+ String partition = partitions[i].substring(partitions[i].indexOf(" ")+1);
+%>
+output[<%= i %>] =<br>
+<%= new CommandPhysicalRevoke(sc.getDefaults(),domain,partition).execute() %> <br>
+<%
+ }
+ }
+%>
+
+<%
+ root.doFlushState();
+%>
+
+</td>
+</tbody>
+</table>
+
+
+
+
+<!-- end content -->
--- /dev/null
+Physical Disk Manager
+SECTION&XenoServers
+
+<!-- content -->
+<img src="pixel.gif" class="block" width="1" height="12">
+
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+INCLUDE&pdmenu.tmpl
+<td valign="top">
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+ <tr><td nowrap="nowrap">Physical Disk Manager</td></tr>
+
+</tbody>
+</table>
+</td>
+</tbody>
+</table>
+
+
+
+
+<!-- end content -->
--- /dev/null
+<td width="10" valign="top" align="right"></td>
+
+<td valign="top">
+<table cellpadding="0" cellspacing="0" border="0">
+<tbody>
+<tr>
+ <td class="menuheader" width="100">Physical Disk Access</td>
+</tr>
+<tr>
+ <td class="sidemenu" width="100"><a href="pd-g.jsp">Grant</a></td>
+</tr>
+<tr>
+ <td class="sidemenu" width="100"><a href="pd-r.jsp">Revoke</a></td>
+</tr>
+<tr>
+ <td class="sidemenu" width="100"><a href="pd-l.jsp">List</a></td>
+</tr>
+</tbody>
+</table>
+</td>
+
+<td width="5" valign="top" align="right"></td>
+
+<td bgcolor="#666666" width="2"><img src="img/pixel.gif" class="block" width="2" height="50"></td>
+
+<td width="15" valign="top" align="right"></td>
<%@ page import="org.xenoserver.control.*" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.Date" %>
+<%@ page import="java.util.Map.Entry" %>
<%@ page import="javax.servlet.http.HttpServletRequestWrapper" %>
<html lang="en">